import JSON5 from 'json5';

export const parseScript = (script: string, name: string) => {
  try {
    const trimmed = script.trim();
    if (!trimmed) return {}; // 空内容直接通过
    // 尝试解析为 JSON5
    try {
      return JSON5.parse(trimmed);
    } catch (jsonError) {
      // 如果失败，尝试解析为函数
      if (trimmed.startsWith('{') && trimmed.includes('=>')) {
        const wrappedScript = `(${trimmed})`; // 将对象包裹为表达式
        const dynamicFunc = new Function(`return ${wrappedScript}`)();
        if (typeof dynamicFunc === 'object') {
          return dynamicFunc;
        }
      }
      throw new Error(`${name}内容格式无效`);
    }
  } catch (e) {
    throw new Error(`${name}解析失败`);
  }
};

// 处理动态函数
export const processDynamicValues = (obj: any) => {
	if (typeof obj === 'object' && obj !== null) {
		Object.keys(obj).forEach((key) => {
			if (typeof obj[key] === 'function') {
				obj[key] = obj[key](); // 执行函数
			}
		});
	}
	return obj;
};